﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.Linq;
using System.Linq;
using System.Data.Linq.Mapping;
using System.Data.Linq;



namespace ProyectoEscuela
{
    public partial class frmABMAlumno : ProyectoEscuela.frmABM
    {

        bool bnuevo = false;
        Alumno alumno = new Alumno();
        
        dbProyectoEscuelaDataContext dbPE = Global.getInstance().db;
        Provincia provincia;

        #region Singleton

        static private frmABMAlumno formABMAlumno = null;
        
        private frmABMAlumno()
        {
            InitializeComponent();
        }

        static public frmABMAlumno GetInstance()
        {
            if (formABMAlumno == null || formABMAlumno.IsDisposed == true)
            {
                formABMAlumno = new frmABMAlumno();
            }
            formABMAlumno.BringToFront();
            return formABMAlumno;
        }

        #endregion

        private void frmABMAlumno_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'dsAlumno.Persona' table. You can move, or remove it, as needed.
            //this.personaTableAdapter.Fill(this.dsAlumno.Persona);
            //alumno = null;
            //Utiles.limpiarControles(this);
            provinciaBindingSource.DataSource = from pro in dbPE.Provincias select pro;
        //    provincia = (Provincia)provinciaBindingSource.Current;
////            localidadBindingSource.DataSource=from loc in dbPE.Localidads where loc.idProvincia== provincia.idProvincia select loc;
//            localidadBindingSource.DataSource = provincia.Localidads;
            //alumno = null;
            
            

        }

        private void cbxLocalidad_SelectedIndexChanged(object sender, EventArgs e)
        {
            
        }

        private void tabPage1_Click(object sender, EventArgs e)
        {

        }

        private void lbNDocumento_Click(object sender, EventArgs e)
        {

        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
           
            if (bnuevo == true)
            {

                try
                {

                    dbPE.Personas.InsertOnSubmit((Alumno)bsAlumno.Current);
                    dbPE.SubmitChanges();
                 
                    bnuevo = false;
                }
                catch (Exception ex)
                {
                    Console.WriteLine("{0} Expecion capturada.", ex);
                }



            }
            else
                if (bnuevo == false)
                {

                    Alumno mAlumno = (Alumno)dbPE.Personas.Single(p => p is Persona && p.idPersona == alumno.idPersona);                                                        
                    mAlumno.Apellido = txbApellido.Text;
                    mAlumno.Nombre = txbNombre.Text;
                    mAlumno.TipoDoc = cbxTipoDoc.SelectedText;
                    mAlumno.Numdoc = txbNumeroDoc.Text;
                    mAlumno.Sexo = cbxSexo.SelectedText;
                    mAlumno.Domicilio = txbDomicilio.Text;
                    mAlumno.Telefono = txbTelefono.Text;
                    mAlumno.Mail = txbMail.Text;
                    mAlumno.Nacionalidad = txbNacionalidad.Text;
                    mAlumno.EstadoCivil = cbxECivil.SelectedText;
                    //  mAlumno.Parentesco = "";
                    //   mAlumno.Antiguedad = "";
                    mAlumno.Titulo = "";
                    mAlumno.EntidadOtorgante = "";
                    mAlumno.NroRegistro = "";
                    mAlumno.Clase = "";
                    mAlumno.TipoPersona = "2";
                    mAlumno.idLocalidad = long.Parse(cbxLocalidad.SelectedValue.ToString());
                    //mAlumno.Localidad = (Localidad)localidadBindingSource.Current;
                    mAlumno.TutorPrincipal = txbTutor.Text;
                    mAlumno.lugarUltimaModif = "";
                    mAlumno.fechaUltimaModif = System.DateTime.Today;
                    mAlumno.PermisoSalida = txbPermiso.Text;
                    mAlumno.GrupoSanguineo = txbGrupo.Text;
                    mAlumno.Observación = txbObservaciones.Text;
                    mAlumno.FeNac = DateTime.Parse(dtpFNacimiento.Text);
                    mAlumno.PermisoSalida = "";
                    mAlumno.AniosAntiguedad = 1;
                    mAlumno.DiasAntiguedad = 1;
                    mAlumno.MesAntiguedad = 1;
                    mAlumno.Barrio = "";
                    mAlumno.NroDGI = "";
                    mAlumno.NroDGR = "";
                    mAlumno.AsignacFliares = true;
                    mAlumno.fichaReconocimientoMedico = "";



                    //dbPE.Personas.InsertOnSubmit(mAlumno);
                    dbPE.SubmitChanges();
                }
           Utiles.limpiarControles(this);

                
            
        }

        /// <summary>
        /// permite realizar el alta de una persona del tipo alumno
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnNuevo_Click(object sender, EventArgs e)
        {
            bnuevo = true;        
            bsAlumno.DataSource = new Alumno();
            Utiles.limpiarControles(this);
            
            
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {

            frmBuscarPersona frmBus = new frmBuscarPersona("alumno");


            try
            {

                if (this.txbNumeroDoc.Text.Trim().Length == 0)
                {

                    frmBus.ShowDialog();
                    alumno = frmBus.getAlumno();

                    //uSR01.setAgente(mAgente);
                    //txbNumeroDoc.Text = alumno.Numdoc;
                   // lblApyNom.Text = alumno.Apellido + " " + alumno.Nombre;


                }
                else
                {
                    alumno =  alumno.getAlumno(this.cbxTipoDoc.Text, this.txbNumeroDoc.Text);


                   // lblApyNom.Text = alumno.Apellido + " " + alumno.Nombre;

                }
                bsAlumno.DataSource = alumno;

                //cbxProvincia.DataSource = alumno.Localidad.Provincia;
                //cbxLocalidad.DataSource = alumno.Localidad;
                
                localidadBindingSource.DataSource = alumno.Localidad;
                provinciaBindingSource.DataSource = alumno.Localidad.Provincia;
                //this.txbNumeroDoc.Text = null;
                //personaBindingSource.DataSource = alumno;

            }
            catch (Exception ex)
            {

                System.Windows.Forms.MessageBox.Show(ex.Message);
            }

        }

        private void txbCPostal_TextChanged(object sender, EventArgs e)
        {

        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            if (alumno != null)
            { 
                try
                {
                    //alumno.Observación = "1";   
                    Alumno mAlumno = (Alumno) dbPE.Personas.Single(p => p is Alumno && p.idPersona == alumno.idPersona);
                    //dbPE.Personas.Attach(mAlumno);
                    dbPE.Refresh(RefreshMode.KeepCurrentValues, mAlumno);
                    dbPE.Personas.DeleteOnSubmit(mAlumno);
                    dbPE.SubmitChanges();
                    Utiles.limpiarControles(this);
                }
                catch (Exception ex)
                {Console.WriteLine("{0} Expecion capturada.", ex); }
            
            }
            else
                MessageBox.Show("Debe seleccionar una registro para eliminar", "Baja", MessageBoxButtons.OK, MessageBoxIcon.Information);
            bnuevo = false;
        }

        private void label7_Click(object sender, EventArgs e)
        {

        }

        private void cbxECivil_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void cbxProvincia_SelectedIndexChanged(object sender, EventArgs e)
        {
          //  provincia = (Provincia)cbxProvincia.SelectedItem;
            provincia = alumno.Localidad.Provincia;
            //localidadBindingSource.DataSource = from loc in dbPE.Localidads where loc.idProvincia == provincia.idProvincia select loc;
            localidadBindingSource.DataSource = from loc in dbPE.Localidads where loc.idProvincia == provincia.idProvincia select loc;
            cbxLocalidad.Update();
            cbxLocalidad.Refresh();
        }

        private void txbNumeroDoc_TextChanged(object sender, EventArgs e)
        {

        }

        private void lbTipoDocumento_Click(object sender, EventArgs e)
        {

        }

        private void cbxTipoDocumento_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void btnSalir_Click(object sender, EventArgs e)
        {
            this.Dispose();
            this.Close();
        }
        
    }
}
